home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / rpcdcpro / rpcdc.h < prev    next >
C/C++ Source or Header  |  1998-11-15  |  10KB  |  285 lines

  1. #ifndef _RPCDC_INCLUDED
  2.  
  3. #define _RPCDC_INCLUDED
  4.  
  5. #ifdef WIN32
  6.     #include <windows.h>
  7. #else
  8.     #include <sys/socket.h>
  9.     #include <arpa/inet.h> 
  10.     #include <netinet/in.h> 
  11.     #include <netdb.h> 
  12.     #define SOCKET int
  13. #endif
  14. #include <stdlib.h>
  15.  
  16. #include <xdr_buf.h>
  17. #include <rpc_msg.h>
  18.  
  19. typedef struct _REG_INFO {
  20.  
  21.     char *ID;
  22.     unsigned long Key1;
  23.     unsigned long Key2;
  24.  
  25. } _REG_INFO;
  26.  
  27. //------------------------------------------------------------------
  28. // New functions added recently
  29. //------------------------------------------------------------------
  30. int _rpc_gethostname (char *hostname, 
  31.                       int maxlen,
  32.                       char *ipaddr);
  33.  
  34. //------------------------------------------------------------------
  35. // Old functions
  36. //------------------------------------------------------------------
  37. size_t _rpcsend_buffer (SOCKET Socket, 
  38.                         RPC_MSG *rpc_msg, 
  39.                         XDR_BUFFER *xdr_buffer,
  40.                         void *Buffer, 
  41.                         size_t (*xdr_func)(void *, void *, int));
  42.  
  43. //------------------------------------------------------------------
  44. size_t _rpcrecv_buffer (SOCKET Socket, 
  45.                         XDR_BUFFER *xdr_buffer,
  46.                         void *Buffer, 
  47.                         size_t (*xdr_func)(void *, void *, int));
  48.  
  49. //------------------------------------------------------------------
  50. size_t _rpcsend_buffer (SOCKET Socket, 
  51.                         RPC_MSG *rpc_msg,
  52.                         char *Buffer, 
  53.                         size_t Len);
  54.  
  55. //------------------------------------------------------------------
  56. size_t _rpcrecv_buffer (SOCKET Socket, 
  57.                         char *Buffer, 
  58.                         size_t Len);
  59.  
  60. //------------------------------------------------------------------
  61. int _rpc_flush (SOCKET Socket,
  62.                 RPC_MSG *rpc_msg);
  63.  
  64. //------------------------------------------------------------------
  65. int _rpcsend_int (SOCKET Socket, 
  66.                   RPC_MSG *rpc_msg, 
  67.                   XDR_BUFFER *xdr_buffer, 
  68.                   int I);
  69.  
  70. //------------------------------------------------------------------
  71. int _rpcrecv_int (SOCKET Socket, 
  72.                   XDR_BUFFER *xdr_buffer, 
  73.                   int *I);
  74.  
  75. //------------------------------------------------------------------
  76. int _rpcsend_uint (SOCKET Socket, 
  77.                    RPC_MSG *rpc_msg, 
  78.                    XDR_BUFFER *xdr_buffer, 
  79.                    unsigned int I);
  80.  
  81. //------------------------------------------------------------------
  82. int _rpcrecv_uint (SOCKET Socket, 
  83.                    XDR_BUFFER *xdr_buffer, 
  84.                    unsigned int *I);
  85.  
  86. //------------------------------------------------------------------
  87. int _rpcsend_long (SOCKET Socket, 
  88.                    RPC_MSG *rpc_msg, 
  89.                    XDR_BUFFER *xdr_buffer, 
  90.                    long I);
  91.  
  92. //------------------------------------------------------------------
  93. int _rpcrecv_long (SOCKET Socket, 
  94.                    XDR_BUFFER *xdr_buffer, 
  95.                    long *I);
  96.  
  97. //------------------------------------------------------------------
  98. int _rpcsend_short (SOCKET Socket, 
  99.                     RPC_MSG *rpc_msg, 
  100.                     XDR_BUFFER *xdr_buffer, 
  101.                     short I);
  102.  
  103. //------------------------------------------------------------------
  104. int _rpcrecv_short (SOCKET Socket, 
  105.                     XDR_BUFFER *xdr_buffer, 
  106.                     short *I);
  107.  
  108. //------------------------------------------------------------------
  109. int _rpcsend_char (SOCKET Socket, 
  110.                    RPC_MSG *rpc_msg, 
  111.                    XDR_BUFFER *xdr_buffer, 
  112.                    char C);
  113.  
  114. //------------------------------------------------------------------
  115. int _rpcrecv_char (SOCKET Socket, 
  116.                    XDR_BUFFER *xdr_buffer, 
  117.                    char *C);
  118.  
  119. //------------------------------------------------------------------
  120. int _rpcsend_string (SOCKET Socket, 
  121.                      RPC_MSG *rpc_msg,
  122.                      char *S, 
  123.                      size_t SLen);
  124.  
  125. //------------------------------------------------------------------
  126. int _rpcrecv_string (SOCKET Socket, 
  127.                      char *S, 
  128.                      size_t SLen);
  129.  
  130. //------------------------------------------------------------------
  131. int _rpcsend_float (SOCKET Socket, 
  132.                     RPC_MSG *rpc_msg, 
  133.                     XDR_BUFFER *xdr_buffer,
  134.                     float X);
  135.  
  136. //------------------------------------------------------------------
  137. int _rpcrecv_float (SOCKET Socket, 
  138.                     XDR_BUFFER *xdr_buffer,
  139.                     float *X);
  140.  
  141. //------------------------------------------------------------------
  142. int _rpcsend_double (SOCKET Socket, 
  143.                      RPC_MSG *rpc_msg, 
  144.                      XDR_BUFFER *xdr_buffer,
  145.                      double X);
  146.  
  147. //------------------------------------------------------------------
  148. int _rpcrecv_double (SOCKET Socket, 
  149.                      XDR_BUFFER *xdr_buffer,
  150.                      double *X);
  151.  
  152. //------------------------------------------------------------------
  153. int _rpcsend_tabfloat (SOCKET Socket, 
  154.                        RPC_MSG *rpc_msg, 
  155.                        float *X, 
  156.                        long int N, 
  157.                        int RestoreData);
  158.  
  159. //------------------------------------------------------------------
  160. int _rpcrecv_tabfloat (SOCKET Socket, 
  161.                        float *X, 
  162.                        long int N);
  163.  
  164. //------------------------------------------------------------------
  165. int _rpcsend_tabdouble (SOCKET Socket, 
  166.                         RPC_MSG *rpc_msg, 
  167.                         double *X, 
  168.                         long int N, 
  169.                         int RestoreData);
  170.  
  171. //------------------------------------------------------------------
  172. int _rpcrecv_tabdouble (SOCKET Socket, 
  173.                         double *X, 
  174.                         long int N);
  175.  
  176. //------------------------------------------------------------------
  177. #define rpcrecv_ulong(S,X,I)    rpcrecv_long(S,X,(long *)I)
  178. #define rpcsend_ulong(S,R,X,I)  rpcsend_long(S,R,X,(long)I)
  179. #define rpcrecv_ushort(S,X,I)   rpcrecv_short(S,X,(short *)I)
  180. #define rpcsend_ushort(S,R,X,I) rpcsend_short(S,R,X,(short)I)
  181. #define rpcrecv_bool            rpcrecv_int
  182. #define rpcsend_bool            rpcsend_int
  183.  
  184. //------------------------------------------------------------------
  185. void _ServerMainLoop (_REG_INFO *RegInfo);
  186.  
  187. //------------------------------------------------------------------
  188. int _StartServerDaemon (char *service,
  189.                         int max_timeout,
  190.                         char *logfile, 
  191.                         size_t bufsize,
  192.                         void (*Constructor)(void *),
  193.                         void (*Destructor)(void *),
  194.                         void (*Dispatch)(int,int),
  195.                         int  (*AcceptConnection)(char *), 
  196.                         void (*udpManager)(SOCKET),
  197.                         _REG_INFO *RegInfo,
  198.                         SOCKET *tcpSocket, 
  199.                         SOCKET *udpSocket);
  200.  
  201. //------------------------------------------------------------------
  202. void _StopServerDaemon (SOCKET tcpSocket, 
  203.                         SOCKET udpSocket);
  204.  
  205. //------------------------------------------------------------------
  206. int _GetClientInfo (int idClient,
  207.                     SOCKET *socket,
  208.                     RPC_MSG **rpc_msg,
  209.                     XDR_BUFFER **xdr_buffer,
  210.                     char **client_buffer);
  211.  
  212. //------------------------------------------------------------------
  213. void _GetErrMsg (char *msg);
  214.  
  215. //------------------------------------------------------------------
  216. SOCKET _StartTCPClient (char *servername,
  217.                         char *service, 
  218.                         int max_timeout, 
  219.                         RPC_MSG *rpc_msg, 
  220.                         XDR_BUFFER *xdr_buffer);
  221.  
  222. //--------------------------------------------------------------